package chen.mbeans;
import chen.modal.GoodsSingle;
import java.util.ArrayList;
import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;
/**
 * 购物车类
 * 用来存储购买的商品
 */
@Named(value = "myCar")
@SessionScoped
public class ShopCar implements Serializable{
	private ArrayList<GoodsSingle> buylist=new ArrayList<GoodsSingle>();
	public ArrayList<GoodsSingle> getBuylist() {
		return buylist;
	}

   
/**
* @功能 向购物车中添加商品
* @参数 single为GoodsSingle类对象，封装了要添加的商品信息
*/
public String addItem(GoodsSingle single){
    if(single!=null){
	if(buylist.isEmpty()){	//如果buylist中不存在任何商品
	    GoodsSingle temp=new GoodsSingle();
            temp.setId(single.getId());
	    temp.setName(single.getName());
	    temp.setPrice(single.getPrice());
	    temp.setNum(single.getNum());
            temp.setImg(single.getImg());
            buylist.add(temp);//存储商品
	    }
        else{
            //如果buylist中已有商品
            //遍历buylist集合对象，判断该集合中是否已经存在当前要添加的商品
           boolean found=false;
	   for(GoodsSingle temp: buylist)
           {//判断从buylist集合中获取的当前商品的名称是否与要添加的商品的ID相同
	    //如果相同，说明已经购买了该商品，只需要将商品的购买数量加1
            if(temp.getId().compareTo(single.getId())==0){
	    //将商品购买数量加1
	    temp.setNum(temp.getNum()+1);
            found=true;
	    break;//结束for循环
	    }
          }	
	 if(!found)
          {//说明buylist中不存在要添加的商品
	   GoodsSingle temp=new GoodsSingle();
	   temp.setId(single.getId());
           temp.setName(single.getName());
	   temp.setPrice(single.getPrice());
	   temp.setNum(single.getNum());
           temp.setImg(single.getImg());
           buylist.add(temp);//存储商品
	  }
       }
  }
    return null;
}
/**
* @功能 从购物车中移除指定名称的商品
* @参数 name表示商品Id
*/
public String removeItem(String id)
{
    for(int i=0;i<buylist.size();i++){
            //遍历buylist集合，查找指定名称的商品
            //获取集合中当前位置的商品
	    GoodsSingle temp=(GoodsSingle)buylist.get(i);
	    //如果商品的名称为name参数指定的名称
	    if(temp.getId().equals(id)){
		if(temp.getNum()>1){//如果商品的购买数量大于1
		    temp.setNum(temp.getNum()-1);//则将购买数量减1
					break;//结束for循环
                }
	    else if(temp.getNum()==1){//如果商品的购买数量为1
		buylist.remove(i);//从buylist集合对象中移除该商品
                }
	}
    }
    return null;
}
/**
* @功能 清空购物车
*/
public String clearCar()
{
	buylist.clear();//清空buylist集合对象
        return null;
}
}